<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Geo3D - ECHARTS-GL</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes"> <!-- Fullscreen Landscape on iOS -->
    <link rel="stylesheet" href="./common.css">
</head>
<body>
<div id="main"></div>
<script src="../node_modules/echarts/dist/echarts.js"></script>
<script src="../node_modules/echarts/map/js/world.js"></script>
<script src="../dist/echarts-gl.js"></script>
<script src="lib/jquery.min.js"></script>
<script src="js/commonUI.js"></script>

<script src="js/exportGL2OBJ.js"></script>
<script src="lib/download.js"></script>
<script>
    var chart = echarts.init(document.getElementById('main'));

    $.getJSON('data/world-population.json', function (populationData) {

        var max = -Infinity;
        var min = Infinity;
        populationData.forEach(function (item) {
            max = Math.max(Math.log(item.value), max);
            min = Math.min(Math.log(item.value), min);
        });

        var regions = populationData.map(function (item) {
            return {
                name: item.name,
                height: (Math.log(item.value) - min) / (max - min) * 3
            };
        })

        chart.setOption({
            backgroundColor: '#cdcfd5',
            tooltip: {},
            toolbox: {
                feature: {
                    myExportObj: {
                        title: 'Export OBJ',
                        icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',
                        onclick: function () {
                            var res = echarts.exportGL2OBJ(chart, {
                                mainType: 'geo3D',
                                index: 0
                            }, {
                                mtllib: 'geo3D'
                            });
                            download(res.obj, 'geo3D.obj', 'text/plain');
                            download(res.mtl, 'geo3D.mtl', 'text/plain');
                            res.textures.forEach(function (texture) {
                                download(texture.data, texture.file, 'image/png');
                            });
                        }
                    }
                }
            },
            geo3D: {
                map: 'world',
                shading: 'lambert',

                environment: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                        offset: 0, color: '#00aaff' // 天空颜色
                    }, {
                        offset: 0.6, color: '#998866' // 地面颜色
                    }, {
                        offset: 1, color: '#998866' // 地面颜色
                    }]
                ),

                lambertMaterial: {
                    detailTexture: 'asset/woods.jpg',
                    textureTiling: 20
                },

                postEffect: {
                    enable: true,
                    screenSpaceAmbientOcclusion: {
                        enable: true,
                        radius: 3,
                        intensity: 2
                    }
                },
                groundPlane: {
                    show: true
                },
                light: {
                    main: {
                        intensity: 1,
                        shadow: true,
                        shadowQuality: 'high',
                        alpha: 30
                    },
                    ambient: {
                        intensity: 0
                    },
                    ambientCubemap: {
                        texture: 'asset/canyon.hdr',
                        exposure: 2,
                        diffuseIntensity: 0.3
                    }
                },

                viewControl: {
                    distance: 50
                },

                itemStyle: {
                    // borderColor: '#222',
                    // borderWidth: 1
                },

                regionHeight: 0.5,

                regions: regions
            },
            series: []
        });

        chart.on('click', function (e) {
            console.log(e);
        });
    });
    window.addEventListener('resize', function () {
        chart.resize();
    });
</script>
</body>
</html>
